"""
文件名：HomePage.py
作用：封装ECShop项目，对首页的元素进行定位和操作的封装
在POM设计模式下，将项目分为三层：
    1. 基础层：对selenium进行二次封装
    2. 操作层：对页面中的元素进行定位并进行操作
    3. 业务层：对封装好的元素操作进行调用，组成用例
"""
# 从common文件夹下的Base.py文件，导入Base类和open_browser方法
from time import sleep
from common.Base import Base, open_browser
from selenium.webdriver.common.by import By


class HomePage(Base):  # 页面类，必须继承Base类，而进行元素定位+元素操作
    """表现层：制作每个元素的定位器"""
    _login_loc = (By.PARTIAL_LINK_TEXT, "请登录")  # 登录链接定位器
    """操作层：对每一个元素进行的操作"""

    def click_login(self):
        """
        ECShop首页，点击登录链接
        1、调用Base类中的click方法
        2、click方法调用了Base页面对selenium元素定位的二次封装方法：_find_element()
        3、_find_element()会返回一个元素：WebElement
        4、click实现的就是，元素.click()
        5、在当前页面,调用时，要给click调用的_find_element()，传入locator参数
        :return:
        """
        self.click(self._login_loc)


if __name__ == '__main__':
    home = HomePage(open_browser())
    home.get_url("http://localhost:8080/ecshop/")
    home.click_login()
    sleep(3)
    home.close_browser()